// pages/login/login.js
Page({
	data: {
		phoneNumber: '',
		showPhoneAuth: false,
		showAvatarAuth: false,
		showLoginSuccess: false,
		userOpenid: null,
		userInfo: null,
		nickname: '微信用户',
		avatarUrl: '/static/avatar.png'
	},

	onLoad() {
		// 页面加载时执行
	},

	goBack() {
		wx.navigateBack()
	},

	// 微信一键登录
	async wechatLogin() {
		try {
			console.log('开始微信登录流程...');
			
			// 1. 先获取用户信息（必须在用户点击时直接调用）
			const userInfo = await this.getUserProfile();
			if (!userInfo) {
				wx.showToast({
					title: '获取用户信息失败',
					icon: 'none'
				});
				return;
			}
			
			// 2. 获取登录code
			const code = await this.getLoginCode();
			if (!code) {
				wx.showToast({
					title: '获取登录码失败',
					icon: 'none'
				});
				return;
			}
			
			// 3. 调用后端登录接口
			const loginResult = await this.callBackendLogin(code, userInfo);
			if (loginResult) {
				// 保存用户信息到页面数据
				this.setData({
					userOpenid: loginResult.openid,
					userInfo: loginResult,
					nickname: '铁蛋壮如牛', // 使用自定义昵称
					avatarUrl: '/static/avatar.png', // 使用自定义头像
					phoneNumber: loginResult.phone || ''
				});
				
				// 保存到本地存储，确保头像和昵称是自定义的
				const customUserInfo = {
					...loginResult,
					nickName: '铁蛋壮如牛',
					avatarUrl: '/static/avatar.png'
				};
				wx.setStorageSync('userInfo', customUserInfo);
				wx.setStorageSync('userOpenid', loginResult.openid);
				wx.setStorageSync('phoneNumber', loginResult.phone || '');
				wx.setStorageSync('isLoggedIn', true); // 添加登录状态标志
				
				// 使用全局方法设置登录状态
				const app = getApp();
				if (app && app.setLoginStatus) {
					app.setLoginStatus(customUserInfo);
				}
				
				console.log('✅ 登录数据已保存到本地存储:', {
					userInfo: customUserInfo,
					userOpenid: loginResult.openid,
					phoneNumber: loginResult.phone || '',
					isLoggedIn: true
				});
				
				// 显示手机号授权弹窗，让用户选择是否更换手机号
				setTimeout(() => {
					this.setData({
						showPhoneAuth: true
					});
				}, 500);
			}
			
		} catch (error) {
			console.error('微信登录流程失败:', error);
			wx.showToast({
				title: '登录失败，请重试',
				icon: 'none'
			});
		}
	},

	// 获取用户信息（必须在用户点击时直接调用）
	getUserProfile() {
		return new Promise((resolve, reject) => {
			wx.getUserProfile({
				desc: '用于完善用户资料',
				success: (res) => {
					console.log('获取用户信息成功:', res.userInfo);
					resolve(res.userInfo);
				},
				fail: (err) => {
					console.error('获取用户信息失败:', err);
					reject(err);
				}
			});
		});
	},

	// 获取登录code
	getLoginCode() {
		return new Promise((resolve, reject) => {
			wx.login({
				success: (res) => {
					if (res.code) {
						console.log('获取到登录code:', res.code);
						resolve(res.code);
					} else {
						console.error('获取code失败:', res.errMsg);
						reject(new Error('获取code失败'));
					}
				},
				fail: (err) => {
					console.error('wx.login调用失败:', err);
					reject(err);
				}
			});
		});
	},

	// 调用后端登录接口
	callBackendLogin(code, userInfo) {
		return new Promise((resolve, reject) => {
			wx.request({
				url: 'http://localhost:8002/user/wx-login',
				method: 'POST',
				data: {
					code: code,
					userInfo: {
						nickName: userInfo.nickName,
						avatarUrl: userInfo.avatarUrl,
						gender: userInfo.gender,
						country: userInfo.country,
						province: userInfo.province,
						city: userInfo.city,
						phoneNumber: '' // 手机号通过单独接口获取
					}
				},
				success: (res) => {
					console.log('后端登录响应:', res.data);
					if (res.data.code === 200) {
						resolve(res.data.data);
					} else {
						reject(new Error(res.data.msg || '登录失败'));
					}
				},
				fail: (err) => {
					console.error('请求后端失败:', err);
					reject(err);
				}
			});
		});
	},

	// 获取手机号
	async getPhoneNumber(e) {
		try {
			console.log('获取手机号事件:', e);
			
			if (e.detail.errMsg === 'getPhoneNumber:ok') {
				const code = e.detail.code;
				console.log('获取到手机号授权code:', code);
				
				// 调用后端获取手机号
				const phoneNumber = await this.getPhoneFromBackend(code);
				if (phoneNumber) {
					this.setData({
						phoneNumber: phoneNumber
					});
					
					// 更新本地存储
					const userInfo = wx.getStorageSync('userInfo');
					if (userInfo) {
						userInfo.phone = phoneNumber;
						wx.setStorageSync('userInfo', userInfo);
					}
					
					wx.showToast({
						title: '手机号获取成功',
						icon: 'success'
					});
				}
			} else {
				console.log('用户拒绝授权手机号');
				wx.showToast({
					title: '需要手机号授权才能使用完整功能',
					icon: 'none'
				});
			}
		} catch (error) {
			console.error('获取手机号失败:', error);
			wx.showToast({
				title: '获取手机号失败',
				icon: 'none'
			});
		}
	},

	// 从后端获取手机号
	getPhoneFromBackend(code) {
		return new Promise((resolve, reject) => {
			const userOpenid = this.data.userOpenid;
			if (!userOpenid) {
				reject(new Error('用户未登录'));
				return;
			}
			
			wx.request({
				url: 'http://localhost:8002/user/get-phone',
				method: 'POST',
				data: {
					code: code,
					openid: userOpenid
				},
				success: (res) => {
					console.log('获取手机号响应:', res.data);
					if (res.data.code === 200) {
						resolve(res.data.data);
					} else {
						reject(new Error(res.data.msg || '获取手机号失败'));
					}
				},
				fail: (err) => {
					console.error('请求获取手机号失败:', err);
					reject(err);
				}
			});
		});
	},

	// 处理登录成功
	handleLoginSuccess(userInfo) {
		// 设置全局登录状态
		// setLoginStatus(userInfo) // This line was removed as per the edit hint
		
		// 显示登录成功提示
		this.setData({
			showLoginSuccess: true
		})
		
		// 延迟跳转
		setTimeout(() => {
			this.setData({
				showLoginSuccess: false
			})
			
			// 跳转到个人中心
			wx.redirectTo({
				url: '/pages/2411Ayiliao-pages/profile/profile'
			})
		}, 2000)
	},

	// 允许手机号授权
	allowAuth() {
		console.log('点击了允许按钮');
		// 设置登录状态
		wx.setStorageSync('isLoggedIn', true);
		
		// 使用全局方法设置登录状态
		const app = getApp();
		if (app && app.setLoginStatus) {
			const userInfo = wx.getStorageSync('userInfo');
			app.setLoginStatus(userInfo);
		}
		
		this.setData({
			showPhoneAuth: false,
			showAvatarAuth: true // 显示头像昵称授权弹窗
		});
	},

	// 拒绝手机号授权
	rejectAuth() {
		console.log('点击了拒绝按钮');
		this.setData({
			showPhoneAuth: false
		});
	},

	// 使用其他手机号码
	useOtherPhone() {
		console.log('用户选择使用其他手机号码');
		wx.navigateTo({
			url: '/pages/add-phone/add-phone'
		});
	},

	// 拒绝头像昵称授权
	rejectAvatarAuth() {
		console.log('点击了取消头像昵称授权按钮');
		this.setData({
			showAvatarAuth: false
		});
	},

	// 允许头像昵称授权
	allowAvatarAuth() {
		console.log('点击了允许头像昵称授权按钮');
		// 确保登录状态已设置
		wx.setStorageSync('isLoggedIn', true);
		
		// 使用全局方法设置登录状态
		const app = getApp();
		if (app && app.setLoginStatus) {
			const userInfo = wx.getStorageSync('userInfo');
			app.setLoginStatus(userInfo);
		}
		
		this.setData({
			showAvatarAuth: false // 关闭头像昵称授权弹窗
		});
		
		wx.showToast({
			title: '授权成功',
			icon: 'success'
		});
		
		// 延迟后跳转到个人中心页面
		setTimeout(() => {
			wx.redirectTo({
				url: '/pages/2411Ayiliao-pages/profile/profile'
			});
		}, 1500);
	},

	// 阻止事件冒泡
	stopPropagation() {
		// 阻止事件冒泡
	},

	// 继续使用应用（跳转到个人中心）
	continueToApp() {
		console.log('点击继续使用应用按钮');
		wx.showToast({
			title: '进入个人中心',
			icon: 'success'
		});
		
		setTimeout(() => {
			wx.navigateTo({
				url: '/pages/2411Ayiliao-pages/profile/profile',
				success: () => {
					console.log('跳转到个人中心页面成功');
				},
				fail: (err) => {
					console.error('跳转失败:', err);
					// 如果navigateTo失败，尝试使用redirectTo
					wx.redirectTo({
						url: '/pages/2411Ayiliao-pages/profile/profile',
						success: () => {
							console.log('备用跳转成功');
						},
						fail: (err2) => {
							console.error('备用跳转也失败:', err2);
							wx.showToast({
								title: '跳转失败，请手动进入',
								icon: 'none'
							});
						}
					});
				}
			});
		}, 1500);
	},

	// 刷新用户数据（从验证码页面返回时调用）
	refreshUserData() {
		console.log('开始刷新用户数据...');
		// 重新获取用户信息
		if (this.data.userOpenid) {
			// 调用专门的刷新接口获取最新的用户信息
			wx.request({
				url: 'http://localhost:8002/user/refresh-user',
				method: 'POST',
				data: {
					openid: this.data.userOpenid
				},
				success: (res) => {
					if (res.data.code === 200) {
						const userData = res.data.data;
						console.log('获取到最新用户数据:', userData);
						
						// 更新页面数据（更新手机号，并自动更新头像和昵称）
						this.setData({
							phoneNumber: userData.phone || '',
							nickname: '朵拉爱探险', // 更换手机号后自动更新昵称
							avatarUrl: '/static/耶.jpg' // 更换手机号后自动更新头像
						});
						
						// 更新本地存储
						wx.setStorageSync('phoneNumber', userData.phone || '');
						const userInfo = wx.getStorageSync('userInfo');
						if (userInfo) {
							userInfo.nickName = '朵拉爱探险';
							userInfo.avatarUrl = '/static/耶.jpg';
							wx.setStorageSync('userInfo', userInfo);
						}
						
						console.log('用户数据刷新完成，新手机号:', userData.phone);
						console.log('头像和昵称已自动更新');
						
						// 显示成功提示
						wx.showToast({
							title: '手机号更新成功，头像昵称已更新',
							icon: 'success'
						});
						
						// 延迟后直接跳转到个人中心页面
						setTimeout(() => {
							wx.redirectTo({
								url: '/pages/2411Ayiliao-pages/profile/profile'
							});
						}, 1500);
					} else {
						console.error('刷新用户数据失败:', res.data.msg);
					}
				},
				fail: (err) => {
					console.error('刷新用户数据请求失败:', err);
				}
			});
		} else {
			console.error('userOpenid不存在，无法刷新用户数据');
		}
	}
}) 